Flash memory is a type of nonvolatile semiconductor memory that maintains storage of data even when the memory device is not electrically powered. It is an improved version of electrically erasable programmable read-only memory (EEPROM). EEPROM erases and rewrites its content one byte at a time; whereas flash memory erases and writes data in entire blocks, making it a very fast memory compared to EEPROM. Traditional mobile and embedded devices present designers with conflicting requirements at every turn, such as speedy boot times at reduced cost, high performance with low pin counts, and minimal board space with maximum functionality.
There are two main types of flash memory used in digital electronics: NAND and NOR flash memory. Both store information in an array of memory cells made from transistors, but they differ in how such transistors are used. NAND flash also uses transistors, but they are connected in a way that resembles a NAND gate. Several transistors are connected in series, and the bit line is asserted low only if all word lines are pulled high. NOR flash memory, on the other hand, has one end of each cell grounded and the other end connected directly to a bit line. This arrangement acts like a NOR gate because the corresponding storage transistor asserts the output bit line low when one of the word lines is pulled high. Of the two flash memory types, NOR flash is commonly used in mobile devices due to its non-volatility, durability, and fast access times.
One key application of NOR flash is to assist in the boot-up of a system on a chip (SoC). The system boot time is the time it takes to get the SoC up and running after power is turned on or a reset is initiated. As a nonvolatile type of memory, the boot code for an SoC can be stored in NOR flash, retrieved, and executed-in-place to boot the SoC.